﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Base;
using Model;

namespace TanHungLong
{
    public partial class FrmTHHoaDonBan : DevExpress.XtraEditors.XtraForm
    {
        #region variant
        private bool allowCloseForm = true;
        string KhachHang = "";
        string TuNgay = "";
        string TrangThaiThanhToan = "";
        private MatHangBOCollection matHangBOCollection = null;
        private HoaDonBanBOCollection HoaDonBanBOCollection = HoaDonBanBOCollection.NewHoaDonBanBOCollection();
        private HoaDonBanChiTietBOCollection HoaDonBanChiTietBOCollection = HoaDonBanChiTietBOCollection.NewHoaDonBanChiTietBOCollection();
        private HoaDonBanBO HoaDonBanBO = HoaDonBanBO.NewRootHoaDonBanBO();

        #endregion variant

        //=====================================
        #region form
        public FrmTHHoaDonBan()
        {
            InitializeComponent();
            this.KeyPreview = true;

            this.Load += new EventHandler(FrmTHHoaDonBan_Load);
            this.FormClosing += new FormClosingEventHandler(FrmTHHoaDonBan_FormClosing);
            this.btnHuy.Click += new EventHandler(btnHuy_Click);
            this.btnTimKiem.Click += new EventHandler(btnTimKiem_Click);
            this.btnClose.Click += new EventHandler(btnClose_Click);
        }

        private void FrmTHHoaDonBan_Load(object sender, EventArgs e)
        {
            RefreshData();
            //SetFormStatus(this.formStatus);

            Utility.InitControl(this.lookUpEditKhachHang);

            Utility.InitControl(this.reLookUpKhachHangID);


        }

        private void FrmTHHoaDonBan_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.allowCloseForm == false)
                e.Cancel = true;
        }

        #endregion form

        //=====================================
        #region control

        #endregion control

        //=====================================
        #region button
        private void btnRefresh_Click(object sender, EventArgs e)
        {
            RefreshData();
        }


        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        #endregion button

        //=====================================
        #region grid

        private void grdView_ShowingEditor(object sender, CancelEventArgs e)
        {
            GridView grdView = (GridView)sender;

            bool del = StaticUtil.GetBool(grdView.GetFocusedRowCellValue("DELE"));
            string fieldName = grdView.FocusedColumn.FieldName;

            if (del && fieldName != "DELE")
                e.Cancel = true;
            else
                if (fieldName == "DELE" && grdView.FocusedRowHandle == GridControl.NewItemRowHandle)
                    e.Cancel = true;
        }

        #endregion grid

        //=====================================
        #region function

        private void ResetData()
        {
            lookUpEditKhachHang.EditValue = null;
            this.HoaDonBanBO = Model.HoaDonBanBO.NewRootHoaDonBanBO();
            this.HoaDonBanChiTietBOCollection = Model.HoaDonBanChiTietBOCollection.NewHoaDonBanChiTietBOCollection();
        }

        private void RefreshData()
        {
            ResetData();
            #region

            KhachHangBOList khachHangBOList = KhachHangBOList.GetKhachHangBOList();
            Utility.SetData(this.reLookUpKhachHangID, khachHangBOList, khachHangBOList.Count);
            Utility.SetData(this.lookUpEditKhachHang, khachHangBOList, khachHangBOList.Count);

            dateEditTungay.DateTime = dateEditDenngay.DateTime = DateTime.Now;
            #endregion BOList
            this.HoaDonBanBOCollection = Model.HoaDonBanBOCollection.NewHoaDonBanBOCollection();

            this.bdSourceHoaDonBan.DataSource = this.HoaDonBanBOCollection.Clone();
        }

        #endregion function


        private void btnTimKiem_Click(object sender, EventArgs e)
        {

            string strWhere = "MaSo like '%" + txtMaSo.Text.Trim() + "%' ";
            if (checkCongNo.Checked)
                if (checkThanhToan.Checked)
                {
                    strWhere = strWhere + "and ThanhToan = 1";
                    TrangThaiThanhToan = "Trạng thái Hóa đơn: Đã Thanh toán (thanh toán đủ,công nợ)";
                }
                else
                {
                    strWhere = strWhere + "and ThanhToan = 1 and TinhTrangThanhToan < 0";
                    TrangThaiThanhToan = "Trạng thái Hóa đơn: Hóa đơn công nợ";
                }
            else
                if (checkThanhToan.Checked)
                {
                    strWhere = strWhere + "and ThanhToan = 1 and TinhTrangThanhToan > 0";
                    TrangThaiThanhToan = "Trạng thái Hóa đơn: Hóa đơn đã thanh toán đủ";
                }
                else
                {
                    strWhere = strWhere + "and ThanhToan = 0 and TinhTrangThanhToan = 0";
                    TrangThaiThanhToan = "Trạng thái Hóa đơn: Tất cả các hóa đơn (Chưa thanh toán, thanh toán đủ, công nợ)";
                }

            if (checkNgay.Checked)
            {
                strWhere = strWhere + " and (convert(nvarchar,NgayLapHoaDon,111) >= '" + dateEditTungay.DateTime.ToString("yyyy/MM/dd") + "') and (convert(nvarchar,NgayLapHoaDon,111) <= '" + dateEditDenngay.DateTime.ToString("yyyy/MM/dd") + "')";
                TuNgay = "Ngày lập Hóa đơn: Từ ngày " + dateEditTungay.DateTime.ToString("dd/MM/yyyy") + " Đến ngày " + dateEditDenngay.DateTime.ToString("dd/MM/yyyy");
            }
            else
                TuNgay = "Ngày lập Hóa đơn: Tất cả các ngày ";

            if (checkNhapKho.Checked)
            {
                strWhere = strWhere + "and TinhTrangXuatKho = 1 ";
                //TuNgay = "Tình trạng nhập kho: Đã nhập vào kho";
            }
            else
            {
                strWhere = strWhere + "and TinhTrangXuatKho = 0 ";
                //TuNgay = "Tình trạng nhập kho: Phiếu nhập đang xử lý, Chưa nhập vào kho";
            }

            if (checkKhachHang.Checked)
                if (lookUpEditKhachHang.EditValue != null)
                {
                    strWhere = strWhere + " and KhachHangID = " + lookUpEditKhachHang.EditValue.ToString();
                    KhachHang = "Khách hàng: " + lookUpEditKhachHang.Text.ToString();
                }
                else
                    KhachHang = "Khách hàng: Tất cả Khách hàng";
            else
                KhachHang = "Khách hàng: Tất cả Khách hàng";

            timKiem(strWhere);
        }


        private void timKiem(string strwhere)
        {

            HoaDonBanBOCollection = Model.HoaDonBanBOCollection.GetHoaDonBanBOCollection(strwhere, "HoaDonBanID", "DESC");
            this.bdSourceHoaDonBan.DataSource = this.HoaDonBanBOCollection.Clone();

            //tinhtien();
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            RefreshData();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {

            RHoaDonBanBOCollection rHoaDonBanBOColecction = RHoaDonBanBOCollection.NewRHoaDonBanBOCollection();
            int rowcount = HoaDonBanBOCollection.Count;
            if (rowcount > 0)
                for (int i = 0; i < rowcount; i++)
                {
                    RHoaDonBanBO rHoaDonBanBO = RHoaDonBanBO.NewRootRHoaDonBanBO();
                    rHoaDonBanBO.CopyFromHoaDonBanBO(HoaDonBanBOCollection[i]);
                    rHoaDonBanBO.STT0 = i + 1;
                    rHoaDonBanBOColecction.Add(rHoaDonBanBO);
                }

            Report.rpTongHopHoaDonBan rTongHopHoaDonBan = new TanHungLong.Report.rpTongHopHoaDonBan(TuNgay, KhachHang, TrangThaiThanhToan, rHoaDonBanBOColecction);
            rTongHopHoaDonBan.ShowPreviewDialog();
        }

        private void btnInChiTiet_Click(object sender, EventArgs e)
        {

            int HoaDonBanID = StaticUtil.GetInt(gridViewHoaDonBan.GetFocusedRowCellValue("HoaDonBanID"), -1);
            if (HoaDonBanID >= 0)
            {
                this.HoaDonBanBO = Model.HoaDonBanBO.GetRootHoaDonBanBO(HoaDonBanID);
                this.HoaDonBanChiTietBOCollection = Model.HoaDonBanChiTietBOCollection.GetHoaDonBanChiTietBOCollection("HoaDonBanID = " + HoaDonBanID.ToString());

                //RHoaDonBanBO rHoaDonBanBO = RHoaDonBanBO.NewRootRHoaDonBanBO();
                //rHoaDonBanBO.CopyFromHoaDonBanBO(HoaDonBanBO);
                //Report.rpHoaDonBanHang rHoaDonBanHang = new TanHungLong.Report.rpHoaDonBanHang(rHoaDonBanBO, HoaDonBanChiTietBOCollection);
                //rHoaDonBanHang.ShowPreviewDialog();
                FrmHoaDonChiTiet frm = new FrmHoaDonChiTiet(this.HoaDonBanBO, this.HoaDonBanChiTietBOCollection);
                frm.ShowDialog();
            }
            else
                MessageBox.Show("Chưa chọn Hóa đơn để in??", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void btnThanhToan_Click(object sender, EventArgs e)
        {
            FrmThuTien.daluu = 0;
            int HoaDonBanID = StaticUtil.GetInt(gridViewHoaDonBan.GetFocusedRowCellValue("HoaDonBanID"), -1);
            if (HoaDonBanID >= 0)
            {
                this.HoaDonBanBO = Model.HoaDonBanBO.GetRootHoaDonBanBO(HoaDonBanID);
                this.HoaDonBanChiTietBOCollection = Model.HoaDonBanChiTietBOCollection.GetHoaDonBanChiTietBOCollection("HoaDonBanID = " + HoaDonBanID.ToString());


                FrmThuTien.daluu = 0;
                FrmThuTien.HoaDonBanBO = this.HoaDonBanBO;
                FrmThuTien.HoaDonBanChiTietBOCollection = this.HoaDonBanChiTietBOCollection;
                FrmThuTien frm = new FrmThuTien();
                frm.ShowDialog();
            }
            else
                MessageBox.Show("Chưa chọn Hóa đơn để Thanh toán??", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);

            if (FrmThuTien.daluu == 1)
            {
                try
                {
                    FrmThuTien.daluu = 0;
                    btnTimKiem_Click(e, e);
                }
                catch
                { }
            }
        }
    }
}